package com.example.maze.swing;

import com.example.maze.model.Maze;

/**
 * 动画寻路器接口，支持步骤记录和回调
 * 
 * @author maze-demo
 */
public interface AnimatedMazeSolver {
    
    /**
     * 执行动画寻路
     * 
     * @param maze 迷宫对象
     * @param stepCallback 每一步的回调函数
     * @return 寻路结果
     */
    AnimatedSolverResult solveWithAnimation(Maze maze, Consumer<SolverStep> stepCallback);
    
    /**
     * 获取算法名称
     * 
     * @return 算法名称
     */
    String getName();
    
    /**
     * 设置动画延迟时间（毫秒）
     * 
     * @param delayMs 延迟时间
     */
    void setAnimationDelay(int delayMs);
    
    /**
     * 获取当前动画延迟时间
     * 
     * @return 延迟时间（毫秒）
     */
    int getAnimationDelay();
}